package cn.iocoder.yudao.module.lowcode.service.table;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

/**
 * 创建表请求
 *
 * @author 芋道源码
 */
@Data
public class CreateTableRequest {

    /**
     * 表名
     */
    @NotBlank(message = "表名不能为空")
    private String tableName;

    /**
     * 表注释
     */
    private String tableComment;

    /**
     * 数据源ID
     */
    @NotNull(message = "数据源ID不能为空")
    private Long dataSourceId;

    /**
     * 字段定义列表
     */
    private List<TableFieldDefinition> fields;

    /**
     * 其他建表选项
     */
    private Map<String, Object> options;

    @Data
    public static class TableFieldDefinition {
        /**
         * 字段名
         */
        private String fieldName;

        /**
         * 字段类型
         */
        private String fieldType;

        /**
         * 字段长度
         */
        private Integer length;

        /**
         * 是否允许为空
         */
        private Boolean nullable;

        /**
         * 是否主键
         */
        private Boolean primaryKey;

        /**
         * 默认值
         */
        private String defaultValue;

        /**
         * 字段注释
         */
        private String comment;
    }
}